---
id: "open"
keywords: ["open", "module"]
name: "open"
summary: "This is the `open` keyword."
category: "languageconstructs"
---

`open` is used to expose all values, types, modules, etc of a module in the current scope. This is useful whenever you want to use a module's functionality without typing out the module name over and over again.

In some cases, `open` will cause a "shadow warning" due to existing identifiers and types being redefined by an `open`ed module. You can explicitly ignore that warning by using an `open!` statement instead.

### Example

<CodeTab labels={["ReScript", "JS Output"]}>

```res
open Math

// Use _PI and pow_float from the Math module
let area = radius => Constants.pi *. pow(radius, ~exp=2.0)
```

```js
function area(radius) {
  return Math.PI * Math.pow(radius, 2.0);
}
```

</CodeTab>

### References

- [Module](../docs/manual/module.mdx)
- [Use open! to ignore shadow warnings](../docs/manual/module.mdx#use-open-to-ignore-shadow-warnings)
